if (typeof Promise !== "undefined" && !Promise.prototype.finally) {
  Promise.prototype.finally = function(callback) {
    const promise = this.constructor;
    return this.then(
      (value) => promise.resolve(callback()).then(() => value),
      (reason) => promise.resolve(callback()).then(() => {
        throw reason;
      })
    );
  };
}
;
if (typeof uni !== "undefined" && uni && uni.requireGlobal) {
  const global2 = uni.requireGlobal();
  ArrayBuffer = global2.ArrayBuffer;
  Int8Array = global2.Int8Array;
  Uint8Array = global2.Uint8Array;
  Uint8ClampedArray = global2.Uint8ClampedArray;
  Int16Array = global2.Int16Array;
  Uint16Array = global2.Uint16Array;
  Int32Array = global2.Int32Array;
  Uint32Array = global2.Uint32Array;
  Float32Array = global2.Float32Array;
  Float64Array = global2.Float64Array;
  BigInt64Array = global2.BigInt64Array;
  BigUint64Array = global2.BigUint64Array;
}
;
if (uni.restoreGlobal) {
  uni.restoreGlobal(Vue, weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
}
(function(vue) {
  "use strict";
  function initRuntimeSocket(hosts, port, id) {
    if (hosts == "" || port == "" || id == "")
      return Promise.resolve(null);
    return hosts.split(",").reduce((promise, host) => {
      return promise.then((socket) => {
        if (socket != null)
          return Promise.resolve(socket);
        return tryConnectSocket(host, port, id);
      });
    }, Promise.resolve(null));
  }
  const SOCKET_TIMEOUT = 500;
  function tryConnectSocket(host, port, id) {
    return new Promise((resolve, reject) => {
      const socket = uni.connectSocket({
        url: `ws://${host}:${port}/${id}`,
        multiple: true,
        // 支付宝小程序 是否开启多实例
        fail() {
          resolve(null);
        }
      });
      const timer = setTimeout(() => {
        socket.close({
          code: 1006,
          reason: "connect timeout"
        });
        resolve(null);
      }, SOCKET_TIMEOUT);
      socket.onOpen((e) => {
        clearTimeout(timer);
        resolve(socket);
      });
      socket.onClose((e) => {
        clearTimeout(timer);
        resolve(null);
      });
      socket.onError((e) => {
        clearTimeout(timer);
        resolve(null);
      });
    });
  }
  function formatMessage(type, args) {
    try {
      return {
        type,
        args: formatArgs(args)
      };
    } catch (e) {
    }
    return {
      type,
      args: []
    };
  }
  function formatArgs(args) {
    return args.map((arg) => formatArg(arg));
  }
  function formatArg(arg, depth = 0) {
    if (depth >= 7) {
      return {
        type: "object",
        value: "[Maximum depth reached]"
      };
    }
    const type = typeof arg;
    switch (type) {
      case "string":
        return formatString(arg);
      case "number":
        return formatNumber(arg);
      case "boolean":
        return formatBoolean(arg);
      case "object":
        return formatObject(arg, depth);
      case "undefined":
        return formatUndefined();
      case "function":
        return formatFunction(arg);
      case "symbol": {
        return formatSymbol(arg);
      }
      case "bigint":
        return formatBigInt(arg);
    }
  }
  function formatFunction(value) {
    return {
      type: "function",
      value: `function ${value.name}() {}`
    };
  }
  function formatUndefined() {
    return {
      type: "undefined"
    };
  }
  function formatBoolean(value) {
    return {
      type: "boolean",
      value: String(value)
    };
  }
  function formatNumber(value) {
    return {
      type: "number",
      value: String(value)
    };
  }
  function formatBigInt(value) {
    return {
      type: "bigint",
      value: String(value)
    };
  }
  function formatString(value) {
    return {
      type: "string",
      value
    };
  }
  function formatSymbol(value) {
    return {
      type: "symbol",
      value: value.description
    };
  }
  function formatObject(value, depth) {
    if (value === null) {
      return {
        type: "null"
      };
    }
    {
      if (isComponentPublicInstance(value)) {
        return formatComponentPublicInstance(value, depth);
      }
      if (isComponentInternalInstance(value)) {
        return formatComponentInternalInstance(value, depth);
      }
      if (isUniElement(value)) {
        return formatUniElement(value, depth);
      }
      if (isCSSStyleDeclaration(value)) {
        return formatCSSStyleDeclaration(value, depth);
      }
    }
    if (Array.isArray(value)) {
      return {
        type: "object",
        subType: "array",
        value: {
          properties: value.map((v, i) => formatArrayElement(v, i, depth + 1))
        }
      };
    }
    if (value instanceof Set) {
      return {
        type: "object",
        subType: "set",
        className: "Set",
        description: `Set(${value.size})`,
        value: {
          entries: Array.from(value).map((v) => formatSetEntry(v, depth + 1))
        }
      };
    }
    if (value instanceof Map) {
      return {
        type: "object",
        subType: "map",
        className: "Map",
        description: `Map(${value.size})`,
        value: {
          entries: Array.from(value.entries()).map((v) => formatMapEntry(v, depth + 1))
        }
      };
    }
    if (value instanceof Promise) {
      return {
        type: "object",
        subType: "promise",
        value: {
          properties: []
        }
      };
    }
    if (value instanceof RegExp) {
      return {
        type: "object",
        subType: "regexp",
        value: String(value),
        className: "Regexp"
      };
    }
    if (value instanceof Date) {
      return {
        type: "object",
        subType: "date",
        value: String(value),
        className: "Date"
      };
    }
    if (value instanceof Error) {
      return {
        type: "object",
        subType: "error",
        value: value.message || String(value),
        className: value.name || "Error"
      };
    }
    let className = void 0;
    {
      const constructor = value.constructor;
      if (constructor) {
        if (constructor.get$UTSMetadata$) {
          className = constructor.get$UTSMetadata$().name;
        }
      }
    }
    return {
      type: "object",
      className,
      value: {
        properties: Object.entries(value).map((entry) => formatObjectProperty(entry[0], entry[1], depth + 1))
      }
    };
  }
  function isComponentPublicInstance(value) {
    return value.$ && isComponentInternalInstance(value.$);
  }
  function isComponentInternalInstance(value) {
    return value.type && value.uid != null && value.appContext;
  }
  function formatComponentPublicInstance(value, depth) {
    return {
      type: "object",
      className: "ComponentPublicInstance",
      value: {
        properties: Object.entries(value.$.type).map(([name, value2]) => formatObjectProperty(name, value2, depth + 1))
      }
    };
  }
  function formatComponentInternalInstance(value, depth) {
    return {
      type: "object",
      className: "ComponentInternalInstance",
      value: {
        properties: Object.entries(value.type).map(([name, value2]) => formatObjectProperty(name, value2, depth + 1))
      }
    };
  }
  function isUniElement(value) {
    return value.style && value.tagName != null && value.nodeName != null;
  }
  function formatUniElement(value, depth) {
    return {
      type: "object",
      // 非 x 没有 UniElement 的概念
      // className: 'UniElement',
      value: {
        properties: Object.entries(value).filter(([name]) => [
          "id",
          "tagName",
          "nodeName",
          "dataset",
          "offsetTop",
          "offsetLeft",
          "style"
        ].includes(name)).map(([name, value2]) => formatObjectProperty(name, value2, depth + 1))
      }
    };
  }
  function isCSSStyleDeclaration(value) {
    return typeof value.getPropertyValue === "function" && typeof value.setProperty === "function" && value.$styles;
  }
  function formatCSSStyleDeclaration(style, depth) {
    return {
      type: "object",
      value: {
        properties: Object.entries(style.$styles).map(([name, value]) => formatObjectProperty(name, value, depth + 1))
      }
    };
  }
  function formatObjectProperty(name, value, depth) {
    const result = formatArg(value, depth);
    result.name = name;
    return result;
  }
  function formatArrayElement(value, index, depth) {
    const result = formatArg(value, depth);
    result.name = `${index}`;
    return result;
  }
  function formatSetEntry(value, depth) {
    return {
      value: formatArg(value, depth)
    };
  }
  function formatMapEntry(value, depth) {
    return {
      key: formatArg(value[0], depth),
      value: formatArg(value[1], depth)
    };
  }
  const CONSOLE_TYPES = ["log", "warn", "error", "info", "debug"];
  let sendConsole = null;
  const messageQueue = [];
  const messageExtra = {};
  function sendConsoleMessages(messages2) {
    if (sendConsole == null) {
      messageQueue.push(...messages2);
      return;
    }
    sendConsole(JSON.stringify(Object.assign({
      type: "console",
      data: messages2
    }, messageExtra)));
  }
  function setSendConsole(value, extra = {}) {
    sendConsole = value;
    Object.assign(messageExtra, extra);
    if (value != null && messageQueue.length > 0) {
      const messages2 = messageQueue.slice();
      messageQueue.length = 0;
      sendConsoleMessages(messages2);
    }
  }
  const originalConsole = /* @__PURE__ */ CONSOLE_TYPES.reduce((methods, type) => {
    methods[type] = console[type].bind(console);
    return methods;
  }, {});
  function rewriteConsole() {
    function wrapConsole(type) {
      return function(...args) {
        [...args];
        sendConsoleMessages([formatMessage(type, args)]);
      };
    }
    if (isConsoleWritable()) {
      CONSOLE_TYPES.forEach((type) => {
        console[type] = wrapConsole(type);
      });
      return function restoreConsole() {
        CONSOLE_TYPES.forEach((type) => {
          console[type] = originalConsole[type];
        });
      };
    } else {
      {
        if (typeof uni !== "undefined" && uni.__f__) {
          const oldLog = uni.__f__;
          if (oldLog) {
            uni.__f__ = function(...args) {
              const [type, filename, ...rest] = args;
              oldLog(type, "", ...rest);
              sendConsoleMessages([formatMessage(type, [...rest, filename])]);
            };
            return function restoreConsole() {
              uni.__f__ = oldLog;
            };
          }
        }
      }
    }
    return function restoreConsole() {
    };
  }
  function isConsoleWritable() {
    const value = console.log;
    const sym = Symbol();
    try {
      console.log = sym;
    } catch (ex) {
      return false;
    }
    const isWritable = console.log === sym;
    console.log = value;
    return isWritable;
  }
  let sendError = null;
  const errorQueue = /* @__PURE__ */ new Set();
  const errorExtra = {};
  function sendErrorMessages(errors) {
    if (sendError == null) {
      errors.forEach((error) => {
        errorQueue.add(error);
      });
      return;
    }
    const data = errors.map((err) => {
      const isPromiseRejection = err && "promise" in err && "reason" in err;
      const prefix = isPromiseRejection ? "UnhandledPromiseRejection: " : "";
      if (isPromiseRejection) {
        err = err.reason;
      }
      if (err instanceof Error && err.stack) {
        if (err.message && !err.stack.includes(err.message)) {
          return `${prefix}${err.message}
${err.stack}`;
        }
        return `${prefix}${err.stack}`;
      }
      if (typeof err === "object" && err !== null) {
        try {
          return prefix + JSON.stringify(err);
        } catch (err2) {
          return prefix + String(err2);
        }
      }
      return prefix + String(err);
    }).filter(Boolean);
    if (data.length > 0) {
      sendError(JSON.stringify(Object.assign({
        type: "error",
        data
      }, errorExtra)));
    }
  }
  function setSendError(value, extra = {}) {
    sendError = value;
    Object.assign(errorExtra, extra);
    if (value != null && errorQueue.size > 0) {
      const errors = Array.from(errorQueue);
      errorQueue.clear();
      sendErrorMessages(errors);
    }
  }
  function initOnError() {
    function onError(error) {
      try {
        if (typeof PromiseRejectionEvent !== "undefined" && error instanceof PromiseRejectionEvent && error.reason instanceof Error && error.reason.message && error.reason.message.includes(`Cannot create property 'errMsg' on string 'taskId`)) {
          return;
        }
        if (false)
          ;
        sendErrorMessages([error]);
      } catch (err) {
        originalConsole.error(err);
      }
    }
    if (typeof uni.onError === "function") {
      uni.onError(onError);
    }
    if (typeof uni.onUnhandledRejection === "function") {
      uni.onUnhandledRejection(onError);
    }
    return function offError() {
      if (typeof uni.offError === "function") {
        uni.offError(onError);
      }
      if (typeof uni.offUnhandledRejection === "function") {
        uni.offUnhandledRejection(onError);
      }
    };
  }
  function initRuntimeSocketService() {
    const hosts = "127.0.0.1,192.168.1.15";
    const port = "8090";
    const id = "app-harmony_JMm8Al";
    const lazy = typeof swan !== "undefined";
    let restoreError = lazy ? () => {
    } : initOnError();
    let restoreConsole = lazy ? () => {
    } : rewriteConsole();
    return Promise.resolve().then(() => {
      if (lazy) {
        restoreError = initOnError();
        restoreConsole = rewriteConsole();
      }
      return initRuntimeSocket(hosts, port, id).then((socket) => {
        if (!socket) {
          restoreError();
          restoreConsole();
          originalConsole.error(wrapError("开发模式下日志通道建立 socket 连接失败。"));
          originalConsole.error(wrapError("如果是小程序平台，请勾选不校验合法域名配置。"));
          originalConsole.error(wrapError("如果是运行到真机，请确认手机与电脑处于同一网络。"));
          return false;
        }
        initMiniProgramGlobalFlag();
        socket.onClose(() => {
          originalConsole.error(wrapError("开发模式下日志通道 socket 连接关闭，请在 HBuilderX 中重新运行。"));
          restoreError();
          restoreConsole();
        });
        setSendConsole((data) => {
          socket.send({
            data
          });
        });
        setSendError((data) => {
          socket.send({
            data
          });
        });
        return true;
      });
    });
  }
  const ERROR_CHAR = "‌";
  function wrapError(error) {
    return `${ERROR_CHAR}${error}${ERROR_CHAR}`;
  }
  function initMiniProgramGlobalFlag() {
    if (typeof wx !== "undefined") {
      wx.__uni_console__ = true;
    } else if (typeof my !== "undefined") {
      my.__uni_console__ = true;
    } else if (typeof tt !== "undefined") {
      tt.__uni_console__ = true;
    } else if (typeof swan !== "undefined") {
      swan.__uni_console__ = true;
    } else if (typeof qq !== "undefined") {
      qq.__uni_console__ = true;
    } else if (typeof ks !== "undefined") {
      ks.__uni_console__ = true;
    } else if (typeof jd !== "undefined") {
      jd.__uni_console__ = true;
    } else if (typeof xhs !== "undefined") {
      xhs.__uni_console__ = true;
    } else if (typeof has !== "undefined") {
      has.__uni_console__ = true;
    } else if (typeof qa !== "undefined") {
      qa.__uni_console__ = true;
    }
  }
  initRuntimeSocketService();
  const isObject = (val) => val !== null && typeof val === "object";
  const defaultDelimiters = ["{", "}"];
  class BaseFormatter {
    constructor() {
      this._caches = /* @__PURE__ */ Object.create(null);
    }
    interpolate(message, values, delimiters = defaultDelimiters) {
      if (!values) {
        return [message];
      }
      let tokens = this._caches[message];
      if (!tokens) {
        tokens = parse(message, delimiters);
        this._caches[message] = tokens;
      }
      return compile(tokens, values);
    }
  }
  const RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
  const RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
  function parse(format, [startDelimiter, endDelimiter]) {
    const tokens = [];
    let position = 0;
    let text = "";
    while (position < format.length) {
      let char = format[position++];
      if (char === startDelimiter) {
        if (text) {
          tokens.push({ type: "text", value: text });
        }
        text = "";
        let sub = "";
        char = format[position++];
        while (char !== void 0 && char !== endDelimiter) {
          sub += char;
          char = format[position++];
        }
        const isClosed = char === endDelimiter;
        const type = RE_TOKEN_LIST_VALUE.test(sub) ? "list" : isClosed && RE_TOKEN_NAMED_VALUE.test(sub) ? "named" : "unknown";
        tokens.push({ value: sub, type });
      } else {
        text += char;
      }
    }
    text && tokens.push({ type: "text", value: text });
    return tokens;
  }
  function compile(tokens, values) {
    const compiled = [];
    let index = 0;
    const mode = Array.isArray(values) ? "list" : isObject(values) ? "named" : "unknown";
    if (mode === "unknown") {
      return compiled;
    }
    while (index < tokens.length) {
      const token = tokens[index];
      switch (token.type) {
        case "text":
          compiled.push(token.value);
          break;
        case "list":
          compiled.push(values[parseInt(token.value, 10)]);
          break;
        case "named":
          if (mode === "named") {
            compiled.push(values[token.value]);
          } else {
            {
              console.warn(`Type of token '${token.type}' and format of value '${mode}' don't match!`);
            }
          }
          break;
        case "unknown":
          {
            console.warn(`Detect 'unknown' type of token!`);
          }
          break;
      }
      index++;
    }
    return compiled;
  }
  const LOCALE_ZH_HANS = "zh-Hans";
  const LOCALE_ZH_HANT = "zh-Hant";
  const LOCALE_EN = "en";
  const LOCALE_FR = "fr";
  const LOCALE_ES = "es";
  const hasOwnProperty = Object.prototype.hasOwnProperty;
  const hasOwn = (val, key) => hasOwnProperty.call(val, key);
  const defaultFormatter = new BaseFormatter();
  function include(str, parts) {
    return !!parts.find((part) => str.indexOf(part) !== -1);
  }
  function startsWith(str, parts) {
    return parts.find((part) => str.indexOf(part) === 0);
  }
  function normalizeLocale(locale, messages2) {
    if (!locale) {
      return;
    }
    locale = locale.trim().replace(/_/g, "-");
    if (messages2 && messages2[locale]) {
      return locale;
    }
    locale = locale.toLowerCase();
    if (locale === "chinese") {
      return LOCALE_ZH_HANS;
    }
    if (locale.indexOf("zh") === 0) {
      if (locale.indexOf("-hans") > -1) {
        return LOCALE_ZH_HANS;
      }
      if (locale.indexOf("-hant") > -1) {
        return LOCALE_ZH_HANT;
      }
      if (include(locale, ["-tw", "-hk", "-mo", "-cht"])) {
        return LOCALE_ZH_HANT;
      }
      return LOCALE_ZH_HANS;
    }
    let locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];
    if (messages2 && Object.keys(messages2).length > 0) {
      locales = Object.keys(messages2);
    }
    const lang = startsWith(locale, locales);
    if (lang) {
      return lang;
    }
  }
  class I18n {
    constructor({ locale, fallbackLocale, messages: messages2, watcher, formater: formater2 }) {
      this.locale = LOCALE_EN;
      this.fallbackLocale = LOCALE_EN;
      this.message = {};
      this.messages = {};
      this.watchers = [];
      if (fallbackLocale) {
        this.fallbackLocale = fallbackLocale;
      }
      this.formater = formater2 || defaultFormatter;
      this.messages = messages2 || {};
      this.setLocale(locale || LOCALE_EN);
      if (watcher) {
        this.watchLocale(watcher);
      }
    }
    setLocale(locale) {
      const oldLocale = this.locale;
      this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;
      if (!this.messages[this.locale]) {
        this.messages[this.locale] = {};
      }
      this.message = this.messages[this.locale];
      if (oldLocale !== this.locale) {
        this.watchers.forEach((watcher) => {
          watcher(this.locale, oldLocale);
        });
      }
    }
    getLocale() {
      return this.locale;
    }
    watchLocale(fn) {
      const index = this.watchers.push(fn) - 1;
      return () => {
        this.watchers.splice(index, 1);
      };
    }
    add(locale, message, override = true) {
      const curMessages = this.messages[locale];
      if (curMessages) {
        if (override) {
          Object.assign(curMessages, message);
        } else {
          Object.keys(message).forEach((key) => {
            if (!hasOwn(curMessages, key)) {
              curMessages[key] = message[key];
            }
          });
        }
      } else {
        this.messages[locale] = message;
      }
    }
    f(message, values, delimiters) {
      return this.formater.interpolate(message, values, delimiters).join("");
    }
    t(key, locale, values) {
      let message = this.message;
      if (typeof locale === "string") {
        locale = normalizeLocale(locale, this.messages);
        locale && (message = this.messages[locale]);
      } else {
        values = locale;
      }
      if (!hasOwn(message, key)) {
        console.warn(`Cannot translate the value of keypath ${key}. Use the value of keypath as default.`);
        return key;
      }
      return this.formater.interpolate(message[key], values).join("");
    }
  }
  function watchAppLocale(appVm, i18n) {
    if (appVm.$watchLocale) {
      appVm.$watchLocale((newLocale) => {
        i18n.setLocale(newLocale);
      });
    } else {
      appVm.$watch(() => appVm.$locale, (newLocale) => {
        i18n.setLocale(newLocale);
      });
    }
  }
  function getDefaultLocale() {
    if (typeof uni !== "undefined" && uni.getLocale) {
      return uni.getLocale();
    }
    if (typeof global !== "undefined" && global.getLocale) {
      return global.getLocale();
    }
    return LOCALE_EN;
  }
  function initVueI18n(locale, messages2 = {}, fallbackLocale, watcher) {
    if (typeof locale !== "string") {
      const options = [
        messages2,
        locale
      ];
      locale = options[0];
      messages2 = options[1];
    }
    if (typeof locale !== "string") {
      locale = getDefaultLocale();
    }
    if (typeof fallbackLocale !== "string") {
      fallbackLocale = typeof __uniConfig !== "undefined" && __uniConfig.fallbackLocale || LOCALE_EN;
    }
    const i18n = new I18n({
      locale,
      fallbackLocale,
      messages: messages2,
      watcher
    });
    let t2 = (key, values) => {
      if (typeof getApp !== "function") {
        t2 = function(key2, values2) {
          return i18n.t(key2, values2);
        };
      } else {
        let isWatchedAppLocale = false;
        t2 = function(key2, values2) {
          const appVm = getApp().$vm;
          if (appVm) {
            appVm.$locale;
            if (!isWatchedAppLocale) {
              isWatchedAppLocale = true;
              watchAppLocale(appVm, i18n);
            }
          }
          return i18n.t(key2, values2);
        };
      }
      return t2(key, values);
    };
    return {
      i18n,
      f(message, values, delimiters) {
        return i18n.f(message, values, delimiters);
      },
      t(key, values) {
        return t2(key, values);
      },
      add(locale2, message, override = true) {
        return i18n.add(locale2, message, override);
      },
      watch(fn) {
        return i18n.watchLocale(fn);
      },
      getLocale() {
        return i18n.getLocale();
      },
      setLocale(newLocale) {
        return i18n.setLocale(newLocale);
      }
    };
  }
  const en = {
    "uni-load-more.contentdown": "Pull up to show more",
    "uni-load-more.contentrefresh": "loading...",
    "uni-load-more.contentnomore": "No more data"
  };
  const zhHans = {
    "uni-load-more.contentdown": "上拉显示更多",
    "uni-load-more.contentrefresh": "正在加载...",
    "uni-load-more.contentnomore": "没有更多数据了"
  };
  const zhHant = {
    "uni-load-more.contentdown": "上拉顯示更多",
    "uni-load-more.contentrefresh": "正在加載...",
    "uni-load-more.contentnomore": "沒有更多數據了"
  };
  const messages = {
    en,
    "zh-Hans": zhHans,
    "zh-Hant": zhHant
  };
  const _export_sfc = (sfc, props) => {
    const target = sfc.__vccOpts || sfc;
    for (const [key, val] of props) {
      target[key] = val;
    }
    return target;
  };
  let platform;
  setTimeout(() => {
    platform = uni.getSystemInfoSync().platform;
  }, 16);
  const {
    t
  } = initVueI18n(messages);
  const _sfc_main$4 = {
    name: "UniLoadMore",
    emits: ["clickLoadMore"],
    props: {
      status: {
        // 上拉的状态：more-loading前；loading-loading中；noMore-没有更多了
        type: String,
        default: "more"
      },
      showIcon: {
        type: Boolean,
        default: true
      },
      iconType: {
        type: String,
        default: "auto"
      },
      iconSize: {
        type: Number,
        default: 24
      },
      color: {
        type: String,
        default: "#777777"
      },
      contentText: {
        type: Object,
        default() {
          return {
            contentdown: "",
            contentrefresh: "",
            contentnomore: ""
          };
        }
      },
      showText: {
        type: Boolean,
        default: true
      }
    },
    data() {
      return {
        webviewHide: false,
        platform,
        imgBase64: ""
      };
    },
    computed: {
      iconSnowWidth() {
        return (Math.floor(this.iconSize / 24) || 1) * 2;
      },
      contentdownText() {
        return this.contentText.contentdown || t("uni-load-more.contentdown");
      },
      contentrefreshText() {
        return this.contentText.contentrefresh || t("uni-load-more.contentrefresh");
      },
      contentnomoreText() {
        return this.contentText.contentnomore || t("uni-load-more.contentnomore");
      }
    },
    mounted() {
    },
    methods: {
      onClick() {
        this.$emit("clickLoadMore", {
          detail: {
            status: this.status
          }
        });
      }
    }
  };
  function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", {
      class: "uni-load-more",
      onClick: _cache[0] || (_cache[0] = (...args) => $options.onClick && $options.onClick(...args))
    }, [
      !$data.webviewHide && ($props.iconType === "circle" || $props.iconType === "auto" && $data.platform === "android") && $props.status === "loading" && $props.showIcon ? (vue.openBlock(), vue.createElementBlock(
        "view",
        {
          key: 0,
          style: vue.normalizeStyle({ width: $props.iconSize + "px", height: $props.iconSize + "px" }),
          class: "uni-load-more__img uni-load-more__img--android-MP"
        },
        [
          vue.createElementVNode(
            "view",
            {
              class: "uni-load-more__img-icon",
              style: vue.normalizeStyle({ borderTopColor: $props.color, borderTopWidth: $props.iconSize / 12 })
            },
            null,
            4
            /* STYLE */
          ),
          vue.createElementVNode(
            "view",
            {
              class: "uni-load-more__img-icon",
              style: vue.normalizeStyle({ borderTopColor: $props.color, borderTopWidth: $props.iconSize / 12 })
            },
            null,
            4
            /* STYLE */
          ),
          vue.createElementVNode(
            "view",
            {
              class: "uni-load-more__img-icon",
              style: vue.normalizeStyle({ borderTopColor: $props.color, borderTopWidth: $props.iconSize / 12 })
            },
            null,
            4
            /* STYLE */
          )
        ],
        4
        /* STYLE */
      )) : !$data.webviewHide && $props.status === "loading" && $props.showIcon ? (vue.openBlock(), vue.createElementBlock(
        "view",
        {
          key: 1,
          style: vue.normalizeStyle({ width: $props.iconSize + "px", height: $props.iconSize + "px" }),
          class: "uni-load-more__img uni-load-more__img--ios-H5"
        },
        [
          vue.createElementVNode("image", {
            src: $data.imgBase64,
            mode: "widthFix"
          }, null, 8, ["src"])
        ],
        4
        /* STYLE */
      )) : vue.createCommentVNode("v-if", true),
      $props.showText ? (vue.openBlock(), vue.createElementBlock(
        "text",
        {
          key: 2,
          class: "uni-load-more__text",
          style: vue.normalizeStyle({ color: $props.color })
        },
        vue.toDisplayString($props.status === "more" ? $options.contentdownText : $props.status === "loading" ? $options.contentrefreshText : $options.contentnomoreText),
        5
        /* TEXT, STYLE */
      )) : vue.createCommentVNode("v-if", true)
    ]);
  }
  const uniLoadMore = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__scopeId", "data-v-e44805a6"], ["__file", "/Users/jianguo/node_modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.vue"]]);
  const _sfc_main$3 = {
    components: {
      uniLoadMore
    },
    data() {
      return {
        score: 0,
        totalQuestions: 0,
        correctAnswers: 0,
        rankList: [
          { id: 1, name: "小车 C1/C2/C3" },
          { id: 2, name: "货车 A2/B2" },
          { id: 3, name: "客车 A1/A3/B1" },
          { id: 4, name: "摩托车 D/E/F" }
        ],
        typeList: [
          { id: 1, name: "科目一" },
          { id: 2, name: "科目四" }
        ],
        rankIndex: 0,
        typeIndex: 0,
        page: 1,
        questionList: [],
        loadMoreStatus: "more",
        appId: "jijnkniwlmswemjf",
        appSecret: "og1FoKNxT0IJMZNdb1UYkcidZBwTjgeE"
      };
    },
    onLoad() {
      this.loadQuestionList();
      this.loadExamScore();
    },
    onShow() {
      this.loadExamScore();
    },
    methods: {
      handleRankChange(e) {
        this.rankIndex = e.detail.value;
        this.page = 1;
        this.questionList = [];
        this.loadQuestionList();
        this.loadExamScore();
      },
      handleTypeChange(e) {
        this.typeIndex = e.detail.value;
        this.page = 1;
        this.questionList = [];
        this.loadQuestionList();
        this.loadExamScore();
      },
      async loadQuestionList() {
        try {
          this.loadMoreStatus = "loading";
          const rank = this.rankList[this.rankIndex].id;
          const type = this.typeList[this.typeIndex].id;
          const url = `https://www.mxnzp.com/api/driver_exam/question/list?page=${this.page}&rank=${rank}&type=${type}&app_id=${this.appId}&app_secret=${this.appSecret}`;
          const res = await uni.request({
            url,
            method: "GET"
          });
          if (res.data.code === 1) {
            const { list } = res.data.data;
            this.questionList = [...this.questionList, ...list];
            this.loadMoreStatus = list.length < 10 ? "noMore" : "more";
          } else {
            uni.showToast({
              title: "获取题目失败",
              icon: "none"
            });
            this.loadMoreStatus = "more";
          }
        } catch (e) {
          uni.showToast({
            title: "网络请求失败",
            icon: "none"
          });
          this.loadMoreStatus = "more";
        }
      },
      loadMore() {
        if (this.loadMoreStatus === "more") {
          this.page++;
          this.loadQuestionList();
        }
      },
      goToDetail(item) {
        uni.navigateTo({
          url: `/pages/detail/detail?id=${item.id}`
        });
      },
      loadExamScore() {
        const currentRank = this.rankList[this.rankIndex].id;
        const currentType = this.typeList[this.typeIndex].id;
        const storageKey = `examScore_${currentRank}_${currentType}`;
        const examRecord = uni.getStorageSync(storageKey) || {
          score: 0,
          totalQuestions: 0,
          correctAnswers: 0
        };
        this.score = examRecord.score;
        this.totalQuestions = examRecord.totalQuestions;
        this.correctAnswers = examRecord.correctAnswers;
      }
    },
    computed: {
      correctRate() {
        if (this.totalQuestions === 0)
          return 0;
        return Math.round(this.correctAnswers / this.totalQuestions * 100);
      }
    }
  };
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_uni_load_more = vue.resolveComponent("uni-load-more");
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createCommentVNode(" 分数展示区 "),
      vue.createElementVNode("view", { class: "score-section" }, [
        vue.createElementVNode("view", { class: "score-item" }, [
          vue.createElementVNode("text", { class: "score-label" }, "总分"),
          vue.createElementVNode(
            "text",
            { class: "score-value" },
            vue.toDisplayString($data.score),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "score-item" }, [
          vue.createElementVNode("text", { class: "score-label" }, "答题数"),
          vue.createElementVNode(
            "text",
            { class: "score-value" },
            vue.toDisplayString($data.totalQuestions),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "score-item" }, [
          vue.createElementVNode("text", { class: "score-label" }, "正确率"),
          vue.createElementVNode(
            "text",
            { class: "score-value" },
            vue.toDisplayString($options.correctRate) + "%",
            1
            /* TEXT */
          )
        ])
      ]),
      vue.createCommentVNode(" 顶部筛选区 "),
      vue.createElementVNode("view", { class: "filter-section" }, [
        vue.createElementVNode("view", { class: "filter-item" }, [
          vue.createElementVNode("picker", {
            onChange: _cache[0] || (_cache[0] = (...args) => $options.handleRankChange && $options.handleRankChange(...args)),
            value: $data.rankIndex,
            range: $data.rankList,
            "range-key": "name"
          }, [
            vue.createElementVNode(
              "view",
              { class: "picker-text" },
              vue.toDisplayString($data.rankList[$data.rankIndex].name),
              1
              /* TEXT */
            )
          ], 40, ["value", "range"])
        ]),
        vue.createElementVNode("view", { class: "filter-item" }, [
          vue.createElementVNode("picker", {
            onChange: _cache[1] || (_cache[1] = (...args) => $options.handleTypeChange && $options.handleTypeChange(...args)),
            value: $data.typeIndex,
            range: $data.typeList,
            "range-key": "name"
          }, [
            vue.createElementVNode(
              "view",
              { class: "picker-text" },
              vue.toDisplayString($data.typeList[$data.typeIndex].name),
              1
              /* TEXT */
            )
          ], 40, ["value", "range"])
        ])
      ]),
      vue.createCommentVNode(" 题目列表 "),
      vue.createElementVNode(
        "scroll-view",
        {
          class: "question-list",
          "scroll-y": "",
          onScrolltolower: _cache[2] || (_cache[2] = (...args) => $options.loadMore && $options.loadMore(...args))
        },
        [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.questionList, (item, index) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                key: item.id,
                class: "question-item",
                onClick: ($event) => $options.goToDetail(item)
              }, [
                vue.createElementVNode("view", { class: "question-title" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "question-index" },
                    vue.toDisplayString(index + 1) + ".",
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "title-text" },
                    vue.toDisplayString(item.title),
                    1
                    /* TEXT */
                  )
                ]),
                item.titlePic ? (vue.openBlock(), vue.createElementBlock("image", {
                  key: 0,
                  src: item.titlePic,
                  mode: "aspectFit",
                  class: "question-image"
                }, null, 8, ["src"])) : vue.createCommentVNode("v-if", true),
                vue.createElementVNode("view", { class: "options-list" }, [
                  item.op1 ? (vue.openBlock(), vue.createElementBlock(
                    "view",
                    {
                      key: 0,
                      class: "option-item"
                    },
                    vue.toDisplayString(item.op1),
                    1
                    /* TEXT */
                  )) : vue.createCommentVNode("v-if", true),
                  item.op2 ? (vue.openBlock(), vue.createElementBlock(
                    "view",
                    {
                      key: 1,
                      class: "option-item"
                    },
                    vue.toDisplayString(item.op2),
                    1
                    /* TEXT */
                  )) : vue.createCommentVNode("v-if", true),
                  item.op3 ? (vue.openBlock(), vue.createElementBlock(
                    "view",
                    {
                      key: 2,
                      class: "option-item"
                    },
                    vue.toDisplayString(item.op3),
                    1
                    /* TEXT */
                  )) : vue.createCommentVNode("v-if", true),
                  item.op4 ? (vue.openBlock(), vue.createElementBlock(
                    "view",
                    {
                      key: 3,
                      class: "option-item"
                    },
                    vue.toDisplayString(item.op4),
                    1
                    /* TEXT */
                  )) : vue.createCommentVNode("v-if", true)
                ])
              ], 8, ["onClick"]);
            }),
            128
            /* KEYED_FRAGMENT */
          )),
          vue.createVNode(_component_uni_load_more, { status: $data.loadMoreStatus }, null, 8, ["status"])
        ],
        32
        /* NEED_HYDRATION */
      ),
      vue.createCommentVNode(" 版权信息 "),
      vue.createElementVNode("view", { class: "copyright-section" }, [
        vue.createElementVNode("text", { class: "copyright-item" }, "作者：坚果派"),
        vue.createElementVNode("text", { class: "copyright-item" }, "公众号：nutpi"),
        vue.createElementVNode("text", { class: "copyright-item" }, "电话：17752170152"),
        vue.createElementVNode("text", { class: "copyright-item" }, "官网：https://www.nutpi.net/")
      ])
    ]);
  }
  const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "/Users/jianguo/Desktop/teaching/uni_driver_exam/pages/index/index.vue"]]);
  const _sfc_main$2 = {
    data() {
      return {
        questionId: "",
        question: {},
        options: {},
        selectedAnswer: "",
        answer: "",
        explain: "",
        showAnswer: false,
        appId: "jijnkniwlmswemjf",
        appSecret: "og1FoKNxT0IJMZNdb1UYkcidZBwTjgeE",
        score: 0,
        totalQuestions: 0,
        correctAnswers: 0
      };
    },
    onLoad(option) {
      this.questionId = option.id;
      this.loadQuestionDetail();
      const scoreData = uni.getStorageSync("examScore") || { score: 0, totalQuestions: 0, correctAnswers: 0 };
      this.score = scoreData.score;
      this.totalQuestions = scoreData.totalQuestions;
      this.correctAnswers = scoreData.correctAnswers;
    },
    methods: {
      async loadQuestionDetail() {
        try {
          const url = `https://www.mxnzp.com/api/driver_exam/answer/list?ids=${this.questionId}&app_id=${this.appId}&app_secret=${this.appSecret}`;
          const res = await uni.request({
            url,
            method: "GET"
          });
          if (res.data.code === 1) {
            const answerData = res.data.data[0];
            this.answer = answerData.answer;
            this.explain = answerData.explain;
            const questionData = this.getQuestionFromStorage(this.questionId);
            if (questionData) {
              this.question = questionData;
              this.formatOptions(questionData);
            }
          } else {
            uni.showToast({
              title: "获取答案失败",
              icon: "none"
            });
          }
        } catch (e) {
          uni.showToast({
            title: "网络请求失败",
            icon: "none"
          });
        }
      },
      getQuestionFromStorage(id) {
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        if (prevPage) {
          return prevPage.$vm.questionList.find((q) => q.id === parseInt(id));
        }
        return null;
      },
      formatOptions(question) {
        this.options = {};
        if (question.op1)
          this.options.A = question.op1;
        if (question.op2)
          this.options.B = question.op2;
        if (question.op3)
          this.options.C = question.op3;
        if (question.op4)
          this.options.D = question.op4;
      },
      selectAnswer(key) {
        if (!this.showAnswer) {
          this.selectedAnswer = key;
        }
      },
      submitAnswer() {
        if (!this.selectedAnswer) {
          uni.showToast({
            title: "请选择答案",
            icon: "none"
          });
          return;
        }
        this.showAnswer = true;
        this.saveExamRecord();
      },
      saveExamRecord() {
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        let currentRank, currentType;
        if (this.options.from === "wrong") {
          currentRank = this.options.rank;
          currentType = this.options.type;
        } else if (prevPage) {
          currentRank = prevPage.$vm.rankList[prevPage.$vm.rankIndex].id;
          currentType = prevPage.$vm.typeList[prevPage.$vm.typeIndex].id;
        }
        if (currentRank && currentType) {
          const storageKey = `examScore_${currentRank}_${currentType}`;
          const examRecord = uni.getStorageSync(storageKey) || {
            score: 0,
            totalQuestions: 0,
            correctAnswers: 0
          };
          examRecord.totalQuestions++;
          if (this.selectedAnswer === this.answer) {
            examRecord.correctAnswers++;
            examRecord.score += 1;
          } else {
            const wrongStorageKey = `wrongQuestions_${currentRank}_${currentType}`;
            const wrongQuestions = uni.getStorageSync(wrongStorageKey) || [];
            const questionData = this.getQuestionFromStorage(this.questionId);
            if (questionData && !wrongQuestions.find((q) => q.id === questionData.id)) {
              wrongQuestions.push({
                ...questionData,
                reviewed: false
              });
              uni.setStorageSync(wrongStorageKey, wrongQuestions);
            }
          }
          uni.setStorageSync(storageKey, examRecord);
        }
      },
      nextQuestion() {
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        if (prevPage) {
          const currentIndex = prevPage.$vm.questionList.findIndex((q) => q.id === parseInt(this.questionId));
          if (currentIndex < prevPage.$vm.questionList.length - 1) {
            const nextQuestion = prevPage.$vm.questionList[currentIndex + 1];
            this.questionId = nextQuestion.id;
            this.question = nextQuestion;
            this.formatOptions(nextQuestion);
            this.selectedAnswer = "";
            this.showAnswer = false;
            this.loadQuestionDetail();
          } else {
            uni.showToast({
              title: "已经是最后一题",
              icon: "none"
            });
          }
        }
      }
    }
  };
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "question-card" }, [
        vue.createCommentVNode(" 题目内容 "),
        vue.createElementVNode("view", { class: "question-title" }, [
          vue.createElementVNode(
            "text",
            { class: "title-text" },
            vue.toDisplayString($data.question.title),
            1
            /* TEXT */
          )
        ]),
        $data.question.titlePic ? (vue.openBlock(), vue.createElementBlock("image", {
          key: 0,
          src: $data.question.titlePic,
          mode: "aspectFit",
          class: "question-image"
        }, null, 8, ["src"])) : vue.createCommentVNode("v-if", true),
        vue.createCommentVNode(" 选项列表 "),
        vue.createElementVNode("view", { class: "options-list" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.options, (option, key) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                key,
                class: vue.normalizeClass(["option-item", {
                  "selected": $data.selectedAnswer === key,
                  "correct": $data.showAnswer && $data.answer === key,
                  "wrong": $data.showAnswer && $data.selectedAnswer === key && $data.selectedAnswer !== $data.answer
                }]),
                onClick: ($event) => $options.selectAnswer(key)
              }, vue.toDisplayString(option), 11, ["onClick"]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ]),
        vue.createCommentVNode(" 操作按钮 "),
        vue.createElementVNode("view", { class: "action-buttons" }, [
          !$data.showAnswer ? (vue.openBlock(), vue.createElementBlock("button", {
            key: 0,
            class: "btn submit",
            onClick: _cache[0] || (_cache[0] = (...args) => $options.submitAnswer && $options.submitAnswer(...args))
          }, "提交答案")) : (vue.openBlock(), vue.createElementBlock("button", {
            key: 1,
            class: "btn next",
            onClick: _cache[1] || (_cache[1] = (...args) => $options.nextQuestion && $options.nextQuestion(...args))
          }, "下一题"))
        ]),
        vue.createCommentVNode(" 答案解析 "),
        $data.showAnswer ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 1,
          class: "answer-analysis"
        }, [
          vue.createElementVNode("view", { class: "analysis-title" }, "答案解析"),
          vue.createElementVNode(
            "view",
            { class: "analysis-content" },
            vue.toDisplayString($data.explain),
            1
            /* TEXT */
          )
        ])) : vue.createCommentVNode("v-if", true)
      ])
    ]);
  }
  const PagesDetailDetail = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "/Users/jianguo/Desktop/teaching/uni_driver_exam/pages/detail/detail.vue"]]);
  const _sfc_main$1 = {
    data() {
      return {
        wrongQuestions: [],
        unreviewedCount: 0,
        rankList: [],
        typeList: [],
        rankIndex: 0,
        typeIndex: 0
      };
    },
    onShow() {
      this.loadWrongQuestions();
    },
    methods: {
      loadWrongQuestions() {
        const pages = getCurrentPages();
        const prevPage = pages[pages.length - 2];
        if (prevPage) {
          const currentRank = prevPage.$vm.rankList[prevPage.$vm.rankIndex].id;
          const currentType = prevPage.$vm.typeList[prevPage.$vm.typeIndex].id;
          const storageKey = `wrongQuestions_${currentRank}_${currentType}`;
          const wrongQuestionsData = uni.getStorageSync(storageKey) || [];
          this.wrongQuestions = wrongQuestionsData;
          this.unreviewedCount = wrongQuestionsData.filter((q) => !q.reviewed).length;
        }
      },
      goToDetail(item) {
        uni.navigateTo({
          url: `/pages/detail/detail?id=${item.id}&from=wrong&rank=${this.rankList[this.rankIndex].id}&type=${this.typeList[this.typeIndex].id}`
        });
      }
    }
  };
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createCommentVNode(" 错题统计 "),
      vue.createElementVNode("view", { class: "stats-section" }, [
        vue.createElementVNode("view", { class: "stats-item" }, [
          vue.createElementVNode("text", { class: "stats-label" }, "错题数量"),
          vue.createElementVNode(
            "text",
            { class: "stats-value" },
            vue.toDisplayString($data.wrongQuestions.length),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "stats-item" }, [
          vue.createElementVNode("text", { class: "stats-label" }, "待复习"),
          vue.createElementVNode(
            "text",
            { class: "stats-value" },
            vue.toDisplayString($data.unreviewedCount),
            1
            /* TEXT */
          )
        ])
      ]),
      vue.createCommentVNode(" 错题列表 "),
      vue.createElementVNode("scroll-view", {
        class: "question-list",
        "scroll-y": ""
      }, [
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($data.wrongQuestions, (item, index) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              key: item.id,
              class: "question-item",
              onClick: ($event) => $options.goToDetail(item)
            }, [
              vue.createElementVNode("view", { class: "question-title" }, [
                vue.createElementVNode(
                  "text",
                  { class: "question-index" },
                  vue.toDisplayString(index + 1) + ".",
                  1
                  /* TEXT */
                ),
                vue.createElementVNode(
                  "text",
                  { class: "title-text" },
                  vue.toDisplayString(item.title),
                  1
                  /* TEXT */
                )
              ]),
              item.titlePic ? (vue.openBlock(), vue.createElementBlock("image", {
                key: 0,
                src: item.titlePic,
                mode: "aspectFit",
                class: "question-image"
              }, null, 8, ["src"])) : vue.createCommentVNode("v-if", true),
              vue.createElementVNode("view", { class: "options-list" }, [
                item.op1 ? (vue.openBlock(), vue.createElementBlock(
                  "view",
                  {
                    key: 0,
                    class: "option-item"
                  },
                  vue.toDisplayString(item.op1),
                  1
                  /* TEXT */
                )) : vue.createCommentVNode("v-if", true),
                item.op2 ? (vue.openBlock(), vue.createElementBlock(
                  "view",
                  {
                    key: 1,
                    class: "option-item"
                  },
                  vue.toDisplayString(item.op2),
                  1
                  /* TEXT */
                )) : vue.createCommentVNode("v-if", true),
                item.op3 ? (vue.openBlock(), vue.createElementBlock(
                  "view",
                  {
                    key: 2,
                    class: "option-item"
                  },
                  vue.toDisplayString(item.op3),
                  1
                  /* TEXT */
                )) : vue.createCommentVNode("v-if", true),
                item.op4 ? (vue.openBlock(), vue.createElementBlock(
                  "view",
                  {
                    key: 3,
                    class: "option-item"
                  },
                  vue.toDisplayString(item.op4),
                  1
                  /* TEXT */
                )) : vue.createCommentVNode("v-if", true)
              ])
            ], 8, ["onClick"]);
          }),
          128
          /* KEYED_FRAGMENT */
        ))
      ])
    ]);
  }
  const PagesWrongWrong = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "/Users/jianguo/Desktop/teaching/uni_driver_exam/pages/wrong/wrong.vue"]]);
  __definePage("pages/index/index", PagesIndexIndex);
  __definePage("pages/detail/detail", PagesDetailDetail);
  __definePage("pages/wrong/wrong", PagesWrongWrong);
  function formatAppLog(type, filename, ...args) {
    if (uni.__log__) {
      uni.__log__(type, filename, ...args);
    } else {
      console[type].apply(console, [...args, filename]);
    }
  }
  const _sfc_main = {
    onLaunch: function() {
      formatAppLog("log", "at App.vue:4", "App Launch");
    },
    onShow: function() {
      formatAppLog("log", "at App.vue:7", "App Show");
    },
    onHide: function() {
      formatAppLog("log", "at App.vue:10", "App Hide");
    }
  };
  const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/jianguo/Desktop/teaching/uni_driver_exam/App.vue"]]);
  function createApp() {
    const app = vue.createVueApp(App);
    return {
      app
    };
  }
  const { app: __app__, Vuex: __Vuex__, Pinia: __Pinia__ } = createApp();
  uni.Vuex = __Vuex__;
  uni.Pinia = __Pinia__;
  __app__.provide("__globalStyles", __uniConfig.styles);
  __app__._component.mpType = "app";
  __app__._component.render = () => {
  };
  __app__.mount("#app");
})(Vue);
